iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
1
自我挑戰組

一日一CPE系列 第 5

[Day5]406: Prime Cuts

  • 分享至 

  • xImage
  •  

考題日期:2014/03/25
題號:406
星等:2
語言:C++


題目:
https://ithelp.ithome.com.tw/upload/images/20190921/201209377K2Y7pwKpO.png


題意:
給予N與C,找出1到N中所有的質數,並將他們排成一列,共有k個。如果k為偶數,輸出中間Cx2個質數,若k為奇數,則輸出中間Cx2-1個質數。
(本題"1"視為質數)


程式:

#include <iostream>

using namespace std;

int main()
{
    int prime[1000];
    bool key1 = false;
    prime[0] = 1;
    prime[1] = 2;
    int k = 2,N,c;
    for( int i = 3; i < 1000 ; i++)
    {
        for(int j = 2 ; j < i; j++)
        {
            if(i % j == 0)
                break;
            if(j == i-1)
            {
                prime[k] = i;
                k++;
                break;
            }
        }
    }
    while(cin>>N>>c)
    {
        if(key1)
            cout<<endl;
        int a[500];
        k = 0;
        for(int i = 0; prime[i] <= N ;i++)
        {
            a[i] = prime[i];
            k++;
        }
        cout<<N<<" "<<c<<":";
        if(c*2-1 > k)
        {
            for(int i = 0 ;i < k ; i++)
            {
                cout<<" "<<a[i];
            }
        }
        else if(k % 2 ==0)
        {
            for(int i = k/2-c, j = 0; j < c*2 ; i++,j++)
            {
                cout<<" "<<a[i];
            }
        }
        else
        {
            for(int i = (k+1)/2-1-c/2, j = 0; j < c*2-1 ; i++,j++)
            {
                cout<<" "<<a[i];
            }
        }
        key1 = true;
        cout<<endl;
    }
}

測資:
https://ithelp.ithome.com.tw/upload/images/20190921/201209377oSSWOMk4U.png


上一篇
[Day4]10929: You can say 11
下一篇
[Day6]299: Train Swapping
系列文
一日一CPE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言